如何使Rust可变引用不可变?

您所在的位置:网站首页 rust 可变引用 如何使Rust可变引用不可变?

如何使Rust可变引用不可变?

2023-07-15 17:01| 来源: 网络整理| 查看: 265

我正在尝试将可变向量转换为Rust中的不可变向量。 我以为这会工作,但不会:

12let data = &mut vec![]; let x = data;          // I thought x would now be an immutable reference

如何将可变引用转换为不可变的绑定?

取消引用,然后重新引用该值:

1234fn main() {     let data = &mut vec![1, 2, 3];     let x = &*data; }

对于您的代码所做的事情,您可能应该阅读变量名之前和`:?之后的`mut`有何区别。 您的变量data已经是不可变的,但是它包含可变的引用。 您不能重新分配data,但是可以更改指向的值。

How can I turn a mutable reference into an immutable binding?

它已经是不可变的绑定,因为您不能更改data是什么。

相关讨论 这段代码在返回Vec的函数中。 如果返回&*data,则会收到错误expected struct std :: vec :: Vec , found reference。 如果我返回*data* I get an error 不能移出借用的内容. Is that something else about the borrow checker? The way Ive resolved this is to return data.clone()`,但是我试图使其性能更高,但是我认为借用检查器可能不允许这样做,因为我在函数中创建了向量 。 也许我说错了我的问题,但是如何从data获取Vec? @jbrown听起来您在说要let mut data = vec![1, 2, 3]; return data;。 是的,那就是我想要的。 谢谢。 病重读关于可变性的锈文档



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3